home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / strcasecmp.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  776b  |  53 lines

  1. /*
  2.  * strcasecmp.c : Case-insensitive string comparison routines
  3.  *
  4.  * George Ferguson, ferguson@cs.rochester.edu, 23 Apr 1993.
  5.  */
  6.  
  7. #define ISUPPER(C) ((C) >= 'A' && (C) <= 'Z')
  8. #define TOLOWER(C) ((C) - 'A' + 'a')
  9. #define NORMAL(C) (ISUPPER(C) ? TOLOWER(C) : (C))
  10.  
  11. int
  12. strcasecmp(s1,s2)
  13. char *s1,*s2;
  14. {
  15.     char c1,c2;
  16.  
  17.     while (1) {
  18.     c1 = NORMAL(*s1);
  19.     c2 = NORMAL(*s2);
  20.     if (c1 != c2)
  21.         return(c1-c2);
  22.     else if (c1 == '\0')
  23.         return(0);
  24.     else {
  25.         s1 += 1;
  26.         s2 += 1;
  27.     }
  28.     }
  29.     /*NOTREACHED*/
  30. }
  31.  
  32. int
  33. strncasecmp(s1,s2,n)
  34. char *s1,*s2;
  35. int n;
  36. {
  37.     char c1,c2;
  38.  
  39.     while (n-- > 0) {
  40.     c1 = NORMAL(*s1);
  41.     c2 = NORMAL(*s2);
  42.     if (c1 != c2)
  43.         return(c1-c2);
  44.     else if (c1 == '\0')
  45.         return(0);
  46.     else {
  47.         s1 += 1;
  48.         s2 += 1;
  49.     }
  50.     }
  51.     return(0);
  52. }
  53.